#ifndef MORPHOLOGYUTILS_H
#define MORPHOLOGYUTILS_H

#include <opencv2/opencv.hpp>

/**
 * @brief 形态学操作工具类
 *
 * 支持：腐蚀(Erode)、膨胀(Dilate)、开运算(Open)、闭运算(Close)
 * 支持核形状：矩形、椭圆、十字
 */
class MorphologyUtils {
public:
    // 核形状枚举
    enum KernelShape {
        RECT,   // 矩形核
        ELLIPSE,// 椭圆核
        CROSS   // 十字核
    };

    // 腐蚀操作
    static cv::Mat erode(const cv::Mat& input, int kernelSize, KernelShape shape);

    // 膨胀操作
    static cv::Mat dilate(const cv::Mat& input, int kernelSize, KernelShape shape);

    // 开运算
    static cv::Mat open(const cv::Mat& input, int kernelSize, KernelShape shape);

    // 闭运算
    static cv::Mat close(const cv::Mat& input, int kernelSize, KernelShape shape);

private:
    // 构造核函数
    static cv::Mat createKernel(int kernelSize, KernelShape shape);
};

#endif // MORPHOLOGYUTILS_H
